/*
#include <stdio.h>
#include <stdlib.h>

typedef struct no{
	int numero;
	struct no *proximo;
	struct no *anterior;
}No;

typedef struct lista{
	int totalNos;
	No *inicio;
	No *fim;
}Lista;

Lista *inicializaLista(){
	Lista *lista = (Lista*)malloc(sizeof(Lista));

	lista->totalNos = 0;
	lista->inicio = NULL;
	lista->fim = NULL;

	return lista;
}

void insereNumeroLista(Lista *lista, int numero){

	No *novo=(No*)malloc(sizeof(No));

	novo->numero = numero;
	novo->anterior = NULL;
	novo->proximo = NULL;

	if(lista->inicio == NULL){
		lista->totalNos++;
		lista->inicio= novo;
		lista->fim= novo;
	}
	else{
		lista->totalNos++;
		novo->anterior = lista->fim;
		lista->fim->proximo = novo;
		lista->fim = novo;
	}
}

void criaListaEncadeada(Lista *lista, char nomeArquivo[]){
	int numeroArquivo = 0;
	FILE *fp;

	fp = fopen (nomeArquivo, "r");

	while(fscanf(fp,"%d", &numeroArquivo) != EOF){

		if (numeroArquivo != '\0' && numeroArquivo != EOF) {
			insereNumeroLista(lista, numeroArquivo);
		}
	}
	fclose (fp);
}


void insertionSort(Lista *lista)
{
	int index;
	No *cur = lista->inicio;
	if(cur == NULL)
		return;
	No *ptr,*temp;
	cur = cur->proximo;

	while(cur != NULL)
	{
		index = 0;
		ptr = cur;
		temp = cur->anterior;
		cur = cur->proximo;

		while(temp != NULL && temp->numero > ptr->numero)
		{
			index++;
			temp = temp->anterior;
		}
		if(index)
		{
			ptr->anterior->proximo = ptr->proximo;
			if(ptr->proximo != NULL)
				ptr->proximo->anterior = ptr->anterior;
			if(temp == NULL)
			{
				temp = lista->inicio;
				ptr->anterior = NULL;
				ptr->proximo = temp;
				ptr->proximo->anterior = ptr;
				lista->inicio = ptr;
			}
			else
			{
				temp = temp->proximo;
				temp->anterior->proximo = ptr;
				ptr->anterior = temp->anterior;
				temp->anterior = ptr;
				ptr->proximo = temp;
			}
		}
	}
}

void liberarLista(Lista *lista)
{
	if(lista->fim == NULL)
	{
		return;
	}
	No *noAtual = lista->inicio;
	while(noAtual != NULL)
	{
		No *temporario = noAtual;
		noAtual = noAtual->proximo;
		free(temporario);
	}
}

void salvaListaNoArquivo(Lista *lista, char nomeArquivo[]){
	FILE *fp;
	int resultado;
	No *noCorrente;

	fp = fopen (nomeArquivo, "w");
	if (fp == NULL) {
		printf ("Houve um erro ao abrir o arquivo.\n");
		return ;
	}


	noCorrente = lista->inicio;
	while( noCorrente != NULL ) {
		resultado = fprintf(fp,"%i ", noCorrente->numero);
		if (resultado == EOF){
			printf("Erro na Gravacao\n");
			return;
		}
		noCorrente = noCorrente->proximo;
	}

	fclose (fp);

}

int main(int argc,char *argv[]){
	Lista *lista;

	lista = inicializaLista();

	criaListaEncadeada(lista, argv[1]);

	insertionSort(lista);

	salvaListaNoArquivo(lista, argv[2]);

	liberarLista(lista);

	return 0;
}

*/
